// pages/todos/todos.js
Page({
  data: {
    //文本框提示信息
    input: '',
    //待办清单数据模型
    todos: [
      { name: 'learning wxml', completed: false },
      { name: 'learning wxss', completed: false },
      { name: 'learning js', completed: true },
    ],
    leftCount: 2,
    allCompleted:false
  },
  //1.先让按钮点击时执行一段代码
  //2.拿到文本框里面的值
  //2.1由于小程序的数据绑定是单向的，
  //必须要给文本注册改变事件
  //3.将这个值添加到列表中
  addToDoHandle: function (e) {
    if(!this.data.input) return
    var todos = this.data.todos

    todos.push({
      name: this.data.input,
      completed:false
    })
    //要用setData才能更新回页面
    this.setData({
      todos: todos,
      input: '',
      leftCount: this.data.leftCount + 1
    })
  },
  inputChangeHandle: function (e) {
    this.setData({ input: e.detail.value })
  },
  //待办点击处理
  toggleTodHandle: function (e) {
    //切换当前点中的待办事项item完成状态
    //e.currentTarget拿到当前点击的事件源
    var item = this.data.todos[e.currentTarget.dataset.index]
    // console.log(item)
    item.completed = !item.completed
    //判断状态然后设置剩余数加减1
    var leftCount = this.data.leftCount + (item.completed ? -1 : 1)
    this.setData({ todos: this.data.todos, leftCount:leftCount  })
  },
  //注意冒泡问题
  removeTodoHandle: function (e) {
    var todos = this.data.todos
    //移除对应下标的todos
    /*并且拿到当前被删调元素:注意splice拿到的是一个数组，即使被删出元素
    只有一个*/
    var item = todos.splice(e.currentTarget.dataset.index, 1)[0]
    var leftCount = this.data.leftCount + (item.completed ? 0 : -1)
    this.setData({ todos:todos,leftCount:leftCount })
  },
  ToggleAllHandle: function () {
    //这里的this指向页面对象
    this.data.allCompleted = !this.data.allCompleted
    var todos = this.data.todos
    var that = this
    todos.forEach(function (item) {
      //函数内部this指向了调用对象
      item.completed = that.data.allCompleted
    })
    var leftCount = this.data.allCompleted ? 0 : this.data.todos.length 
    this.setData({ todos:todos , leftCount:leftCount })
  },
  ClearHandle: function (e) {
    // var todos = []
    // this.data.todos.forEach(function (item) {
    //   if (!item.completed) {
    //     todos.push(item)
    //   }
    // })
    //使用filter方法
    var todos = this.data.todos.filter(function (item) {
      //return后面为真的值时返回到新数组中
      //所以为false是未完成的，将false的放回数组中，所以取非
      return !item.completed
    })
    //todos是新的未完成的任务列
    this.setData({ todos:todos })  
  }

})